package com.cmos.um.web;


import java.util.Map;

import com.alibaba.dubbo.config.annotation.Reference;
import com.cmos.um.iservice.ITaskSV;
import com.cmos.um.utils.RetMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSONObject;

@RestController
@RequestMapping("/ngocadapter/ws/campaignService")
public class TaskController {

    @Reference
    private ITaskSV iTaskSV;

    private final static Logger logger = LoggerFactory.getLogger(TaskController.class);

    /**
     * 【操作】新增任务信息同步
     *
     * @param params 参数集JSONObject（含params参数——此参数在输入函数时为Json字符串）
     * @return Map<String,Object> 返回的数据（Map<String,Object>形式）
     */
    @PostMapping("/synchCampBsicInfoandStrategy")
    public Map<String, Object> synchCampBsicInfoandStrategy(@RequestBody JSONObject params) {
        if (!params.containsKey("params")) {
            return new RetMap("0", "入参不符合规范！");
        }
        if (params.getJSONObject("params").getString("campaignId").length() != 16) {
            return new RetMap("0", "任务号必须为16位！");
        }
        return iTaskSV.synchCampBsicInfoandStrategy(params);
    }

    /**
     * 【操作】任务基本信息修改同步
     *
     * @param params 参数集JSONObject（含params参数——此参数在输入函数时为Json字符串）
     * @return Map<String,Object> 返回的数据（Map<String,Object>形式）
     */
    @PostMapping("/uptCampBsicInfoandStrategy")
    public Map<String, Object> uptCampBsicInfoandStrategy(@RequestBody JSONObject params) {
        if (!params.containsKey("params")) {
            return new RetMap("0", "入参不符合规范");
        }
        if (params.getJSONObject("params").getString("campaignId").length() != 16) {
            return new RetMap("0", "任务号必须为16位！");
        }
        return iTaskSV.uptCampBsicInfoandStrategy(params);
    }

    /**
     * 【操作】任务状态更改通知接口
     *
     * @param params 参数集JSONObject（含params参数——此参数在输入函数时为Json字符串）
     * @return Map<String,Object> 返回的数据（Map<String,Object>形式）
     */
    @PostMapping("/synchCampaignStates")
    public Map<String, Object> synchCampaignStates(@RequestBody JSONObject params) {
        if (!params.containsKey("params") && !params.containsKey("beans")) {
            return new RetMap("0", "入参不符合规范");
        }
        return iTaskSV.synchCampaignStates(params);
    }

    /**
     * 【操作】任务状态修改接口（提供给cti）
     *
     * @param params 参数集JSONObject（含params参数——此参数在输入函数时为Json字符串）
     * @return Map<String,Object> 返回的数据（Map<String,Object>形式）
     */
    @PostMapping("/updateTaskStatus")
    public Map<String, Object> updateTaskStatus(@RequestBody JSONObject params) {
        if (!params.containsKey("params")) {
            return new RetMap("0", "入参不符合规范");
        }
        return iTaskSV.updateTaskStatus(params);
    }
}
